//
//  XJHomeTagSectionHeader.m
//  XinJiangMall
//
//  Created by RaoBo on 2018/6/22.
//  Copyright © 2018年 Tzyang. All rights reserved.
//  h:200



#import "XJHomeTagSectionHeader.h"
//view
#import "XJHomeTagView.h"
//model
#import "HomeTagsModel.h"
#import <objc/runtime.h>

@implementation XJHomeTagSectionHeader

#pragma mark - 一初始化
- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        //什么都不做>做了也没用。数据没来。一片空白。
    }
    return self;
}
#pragma mark - 二 布局

const char *kPropertListKey = "kPropertListKey";

- (void)setDataArray:(NSMutableArray *)dataArray {
    _dataArray = dataArray;
    
    XJLog(@"%ld",self.dataArray.count);
    
    NSArray *ptyArr = objc_getAssociatedObject(self, kPropertListKey);
    if (ptyArr.count) {
        return;
    }
    
   
    //数组有值时创建
    if (self.dataArray.count) {
        [self setupView];
    }
    
    objc_setAssociatedObject(self, kPropertListKey, dataArray.copy, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

}

- (void)setupView {
    
    //内存优化:避免反复的创建 如果该控件已经创建就不要在反反复复的创建了。
    //加一个判断:如果创建过了就不要再创建了。问题是判断条件怎么写？
    //两种方式:通过判断子控件是否添加到self上来判断,第一次肯定是没有的。 前提:在setDataArray一定要判断只有当数组有值的时候才调用setupView不然无效。好好想想原理。
//    if ([self viewWithTag:10000]) {
//        return;
//    }
    //第二种方式:通过关联对象来做。

    
    NSInteger cnt = self.dataArray.count;

    //tagView的宽高
    CGFloat tagView_w = 80;
    CGFloat tagView_h = 80;
    CGFloat kmargin = 10; //间距
    
    //设置scrollView的frame、contentSize
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.bounds];
    scrollView.contentSize = CGSizeMake((cnt/2+1) * tagView_w, tagView_h);
    [self addSubview:scrollView];

    //添加一个tag值用于拿到给控件
    scrollView.tag = 10000;
    
    
    
    for (int i=0; i<cnt; i++) {
        //创建对象
        XJHomeTagView *tagView = [[XJHomeTagView alloc] initWithFrame:CGRectMake(0, 0, tagView_w, tagView_h)];
        
        tagView.homeTagViewBlock = ^(HomeTagsModel *homeTagModel) {
            //进行第二次block传递
            if (self.homeTagSectionHeaderBlock) {
                self.homeTagSectionHeaderBlock(homeTagModel);
            }
        };
        
        //九宫格布局
        CGFloat x = kmargin;
        CGFloat y = kmargin;

        if (i%2 == 0) {
            x = kmargin + (kmargin + tagView_w)*i / 2;
        }else {
            x = kmargin + (kmargin + tagView_w) * (i-1) / 2;
            y = kmargin *2 + tagView_h;
        }
        tagView.frame = CGRectMake(x, y, tagView_w, tagView_h);
      
        tagView.tagModel = self.dataArray[i];
    
        //添加到scrollView上
        [scrollView addSubview:tagView];

    }

}

#pragma mark - 三 回调事件
@end

#pragma mark - 页面布局思路
/**
 需求要做成这样的
 1 3 5
 2 4
 想用collectionview的flowLayout来做。做不出来。只好用最原始的frame 进行九宫格布局。
 
 最下面是一个UIScrollView左右滚动
 再根据传经来的数组个是 动态的创建XJHomeTagView 实现上诉需求效果
 
 这里需要进行两次block回调传值。
 将XJHomeTagView 的点击这件传到当前这个view中
 在使用block进行第二次回调。在将点击事件传递到控制器中进行跳转。根据点击的cell进行相应的操作。
 */
